From eaab96c066b550445df1883b2fe8728d61f42b99 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Javier=20Jard=C3=B3n?= Date: Tue, 4 May 2010 05:27:50 +0200 Subject: [PATCH] Use GSlice for GtkRequisition Also add gtk_requisition_new to avoid memory allocator confusions when using GtkRequisitions. Based on a Christian Persch patch. Fixes https://bugzilla.gnome.org/show_bug.cgi?id=461618 --- docs/reference/gtk/gtk3-sections.txt | 1 + gtk/gtk.symbols | 1 + gtk/gtkwidget.c | 20 ++++++++++++++++++-- gtk/gtkwidget.h | 1 + 4 files changed, 21 insertions(+), 2 deletions(-) diff --git a/docs/reference/gtk/gtk3-sections.txt b/docs/reference/gtk/gtk3-sections.txt index ffce376446..ce77892c7e 100644 --- a/docs/reference/gtk/gtk3-sections.txt +++ b/docs/reference/gtk/gtk3-sections.txt @@ -4942,6 +4942,7 @@ gtk_widget_get_requisition gtk_widget_device_is_shadowed +gtk_requisition_new gtk_requisition_copy gtk_requisition_free diff --git a/gtk/gtk.symbols b/gtk/gtk.symbols index b5125d0e7d..fe70e5c338 100644 --- a/gtk/gtk.symbols +++ b/gtk/gtk.symbols @@ -4312,6 +4312,7 @@ gtk_vseparator_new gtk_requisition_copy gtk_requisition_free gtk_requisition_get_type G_GNUC_CONST +gtk_requisition_new G_GNUC_MALLOC gtk_widget_activate gtk_widget_is_composited gtk_widget_add_accelerator diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index a7d391bab8..a4141af2be 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -10240,6 +10240,22 @@ gtk_widget_class_path (GtkWidget *widget, } } +/** + * gtk_requisition_new: + * + * Allocates a new #GtkRequisition structure and initializes its elements to zero. + * + * Returns: a new empty #GtkRequisition. The newly allocated #GtkRequisition should + * be freed with gtk_requisition_free(). + * + * Since: 3.0 + */ +GtkRequisition * +gtk_requisition_new (void) +{ + return g_slice_new0 (GtkRequisition); +} + /** * gtk_requisition_copy: * @requisition: a #GtkRequisition @@ -10251,7 +10267,7 @@ gtk_widget_class_path (GtkWidget *widget, GtkRequisition * gtk_requisition_copy (const GtkRequisition *requisition) { - return (GtkRequisition *)g_memdup (requisition, sizeof (GtkRequisition)); + return g_slice_dup (GtkRequisition, requisition); } /** @@ -10263,7 +10279,7 @@ gtk_requisition_copy (const GtkRequisition *requisition) void gtk_requisition_free (GtkRequisition *requisition) { - g_free (requisition); + g_slice_free (GtkRequisition, requisition); } GType diff --git a/gtk/gtkwidget.h b/gtk/gtkwidget.h index 15ec19851f..0bae2c6da5 100644 --- a/gtk/gtkwidget.h +++ b/gtk/gtkwidget.h @@ -954,6 +954,7 @@ void gtk_widget_set_has_tooltip (GtkWidget *widget, gboolean gtk_widget_get_has_tooltip (GtkWidget *widget); GType gtk_requisition_get_type (void) G_GNUC_CONST; +GtkRequisition *gtk_requisition_new (void) G_GNUC_MALLOC; GtkRequisition *gtk_requisition_copy (const GtkRequisition *requisition); void gtk_requisition_free (GtkRequisition *requisition); -- 2.30.2